package com.slofzx.nuoda.evaluation.project.dto;


import com.slofzx.nuoda.common.dto.CommonFilterQueryDTO;
import com.slofzx.nuoda.common.dto.PageDTO;
import com.slofzx.nuoda.common.util.DataConvertUtil;
import org.apache.commons.lang3.ArrayUtils;

import java.util.List;
import java.util.Set;

/**
 * 项目信息数据传递类
 *
 * @author nuoda
 * @since 2023-10-20 11:04:03
 */
public class ProjectInfoDTO extends CommonFilterQueryDTO {
    private static final long serialVersionUID = -35629497470709524L;
    /**
     * 数据id
     */
    private String id;
    /**
     * 项目名称
     */
    private String name;
    /**
     * 项目类型
     */
    private String type;
    private String batchNamed;
    private String batchType;
    /**
     * 性质
     */
    private String quality;
    /**
     * 建设单位
     */
    private String buildOffice;
    /**
     * 评价期（年数）
     */
    private Integer evaluationPeriod;
    /**
     * 建设期年限
     */
    private Integer buildYearCount;
    /**
     * 产品类型
     */
    private String productType;
    /**
     * 油气品种
     */
    private String productProperty;
    /**
     * 油气藏类型
     */
    private String poolType;
    /**
     * 新老区
     */
    private String areaMark;
    /**
     * 评价方式（地面评价、油藏评价）
     */
    private String evaluationMethod;
    /**
     * 项目年度
     */
    private Integer year;
    /**
     * 评价任务ID
     */
    private String batchId;
    /**
     * 大区
     */
    private String region;
    /**
     * 油气田类型
     */
    private String oilGasField;
    /**
     * 产能方式
     */
    private String capacityType;
    /**
     * 驱替方式
     */
    private String displacementMethod;

    /**
     * 钻井采油井数
     */
    private Integer drillOilWellCount;
    /**
     * 钻井采油井数
     */
    private Integer drillWaterWellCount;
    /**
     * 钻井井数小计
     */
    private Integer drillWellCount;
    /**
     * 直井井深
     */
    private Double straightWellDeth;
    /**
     * 水平井深
     */
    private Double horizontalWellDeth;
    /**
     * 进尺
     */
    private Double intoRuler;
    /**
     * 基建油井数
     */
    private Integer infOilWellCount;
    /**
     * 基建水井
     */
    private Integer infWaterWellCount;
    /**
     * 基建井数
     */
    private Integer infWellCount;
    /**
     * 建成能力
     */
    private Double builtUpCapacity;
    /**
     * 直井单井日产
     */
    private Double straightWellOutput;
    /**
     * 水平单井日产
     */
    private Double horizontalWellOutput;
    /**
     * 钻水平井数
     */
    private Integer horizontalWellCount;
    /**
     * 钻水平井
     */
    private Integer buildHorizontalWellCount;
    /**
     * 区块汽油比
     * （m³/t）
     */
    private Double regionOilGasRate;
    /**
     * 利用井净值（万元）
     */
    private Double oldNetWorth;
    /**
     * 基准
     * 收益率
     */
    private Double baseIrr;
    /**
     * 模型ID
     * */
    private String modelId;

    private String[] irrAfterTax;

    private Double lowIrrAfterTax;
    private Double highIrrAfterTax;

    private String[] totalInvest;

    private Integer lowTotalInvest;
    private Integer highTotalInvest;

    private Set<String> idList;
    /**
     * 是否合格
     */
    private String passed;

    private List<ProjectYearDataDTO> yearDataDTOList;

    private boolean batchName = false;

    /**
     * 最终计算版本号
     */
    private String computeId;

    private Set<String> filterBatchIdSet;
    /**
     * 导出自定义模板ID
     */
    private String templateId;

    public ProjectInfoDTO() {
        //默认查询不分页
        this.pageSize = PageDTO.ALL;
    }

    public String getTemplateId() {
        return templateId;
    }

    public void setTemplateId(String templateId) {
        this.templateId = templateId;
    }

    public String getQuality() {
        return quality;
    }

    public void setQuality(String quality) {
        this.quality = quality;
    }

    public String getBatchNamed() {
        return batchNamed;
    }

    public void setBatchNamed(String batchNamed) {
        this.batchNamed = batchNamed;
    }

    public String getPassed() {
        return passed;
    }

    public void setPassed(String passed) {
        this.passed = passed;
    }

    public String getBatchType() {
        return batchType;
    }

    public void setBatchType(String batchType) {
        this.batchType = batchType;
    }

    public String getComputeId() {
        return computeId;
    }

    public void setComputeId(String computeId) {
        this.computeId = computeId;
    }

    public boolean isBatchName() {
        return batchName;
    }

    public void setBatchName(boolean batchName) {
        this.batchName = batchName;
    }

    public Set<String> getIdList() {
        return idList;
    }

    public void setIdList(Set<String> idList) {
        this.idList = idList;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getBuildOffice() {
        return buildOffice;
    }

    public void setBuildOffice(String buildOffice) {
        this.buildOffice = buildOffice;
    }

    public Integer getEvaluationPeriod() {
        return evaluationPeriod;
    }

    public void setEvaluationPeriod(Integer evaluationPeriod) {
        this.evaluationPeriod = evaluationPeriod;
    }

    public Integer getBuildYearCount() {
        return buildYearCount;
    }

    public void setBuildYearCount(Integer buildYearCount) {
        this.buildYearCount = buildYearCount;
    }

    public String getProductType() {
        return productType;
    }

    public void setProductType(String productType) {
        this.productType = productType;
    }

    public String getProductProperty() {
        return productProperty;
    }

    public void setProductProperty(String productProperty) {
        this.productProperty = productProperty;
    }

    public String getPoolType() {
        return poolType;
    }

    public void setPoolType(String poolType) {
        this.poolType = poolType;
    }

    public String getAreaMark() {
        return areaMark;
    }

    public void setAreaMark(String areaMark) {
        this.areaMark = areaMark;
    }

    public String getEvaluationMethod() {
        return evaluationMethod;
    }

    public void setEvaluationMethod(String evaluationMethod) {
        this.evaluationMethod = evaluationMethod;
    }

    public Integer getYear() {
        return year;
    }

    public void setYear(Integer year) {
        this.year = year;
    }

    public String getBatchId() {
        return batchId;
    }

    public void setBatchId(String batchId) {
        this.batchId = batchId;
    }

    public String getRegion() {
        return region;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public String getOilGasField() {
        return oilGasField;
    }

    public void setOilGasField(String oilGasField) {
        this.oilGasField = oilGasField;
    }

    public String getCapacityType() {
        return capacityType;
    }

    public void setCapacityType(String capacityType) {
        this.capacityType = capacityType;
    }

    public String getDisplacementMethod() {
        return displacementMethod;
    }

    public void setDisplacementMethod(String displacementMethod) {
        this.displacementMethod = displacementMethod;
    }

    public Integer getDrillOilWellCount() {
        return drillOilWellCount;
    }

    public void setDrillOilWellCount(Integer drillOilWellCount) {
        this.drillOilWellCount = drillOilWellCount;
    }

    public Integer getDrillWaterWellCount() {
        return drillWaterWellCount;
    }

    public void setDrillWaterWellCount(Integer drillWaterWellCount) {
        this.drillWaterWellCount = drillWaterWellCount;
    }

    public Integer getDrillWellCount() {
        return drillWellCount;
    }

    public void setDrillWellCount(Integer drillWellCount) {
        this.drillWellCount = drillWellCount;
    }

    public Double getStraightWellDeth() {
        return straightWellDeth;
    }

    public void setStraightWellDeth(Double straightWellDeth) {
        this.straightWellDeth = straightWellDeth;
    }

    public Double getHorizontalWellDeth() {
        return horizontalWellDeth;
    }

    public void setHorizontalWellDeth(Double horizontalWellDeth) {
        this.horizontalWellDeth = horizontalWellDeth;
    }

    public Double getIntoRuler() {
        return intoRuler;
    }

    public void setIntoRuler(Double intoRuler) {
        this.intoRuler = intoRuler;
    }

    public Integer getInfOilWellCount() {
        return infOilWellCount;
    }

    public void setInfOilWellCount(Integer infOilWellCount) {
        this.infOilWellCount = infOilWellCount;
    }

    public Integer getInfWaterWellCount() {
        return infWaterWellCount;
    }

    public void setInfWaterWellCount(Integer infWaterWellCount) {
        this.infWaterWellCount = infWaterWellCount;
    }

    public Integer getInfWellCount() {
        return infWellCount;
    }

    public void setInfWellCount(Integer infWellCount) {
        this.infWellCount = infWellCount;
    }

    public Double getBuiltUpCapacity() {
        return builtUpCapacity;
    }

    public void setBuiltUpCapacity(Double builtUpCapacity) {
        this.builtUpCapacity = builtUpCapacity;
    }

    public Double getStraightWellOutput() {
        return straightWellOutput;
    }

    public void setStraightWellOutput(Double straightWellOutput) {
        this.straightWellOutput = straightWellOutput;
    }

    public Double getHorizontalWellOutput() {
        return horizontalWellOutput;
    }

    public void setHorizontalWellOutput(Double horizontalWellOutput) {
        this.horizontalWellOutput = horizontalWellOutput;
    }

    public Integer getHorizontalWellCount() {
        return horizontalWellCount;
    }

    public void setHorizontalWellCount(Integer horizontalWellCount) {
        this.horizontalWellCount = horizontalWellCount;
    }

    public Integer getBuildHorizontalWellCount() {
        return buildHorizontalWellCount;
    }

    public void setBuildHorizontalWellCount(Integer buildHorizontalWellCount) {
        this.buildHorizontalWellCount = buildHorizontalWellCount;
    }

    public Set<String> getFilterBatchIdSet() {
        return filterBatchIdSet;
    }

    public void setFilterBatchIdSet(Set<String> filterBatchIdSet) {
        this.filterBatchIdSet = filterBatchIdSet;
    }

    public Double getRegionOilGasRate() {
        return regionOilGasRate;
    }

    public void setRegionOilGasRate(Double regionOilGasRate) {
        this.regionOilGasRate = regionOilGasRate;
    }

    public Double getOldNetWorth() {
        return oldNetWorth;
    }

    public void setOldNetWorth(Double oldNetWorth) {
        this.oldNetWorth = oldNetWorth;
    }

    public Double getBaseIrr() {
        return baseIrr;
    }

    public void setBaseIrr(Double baseIrr) {
        this.baseIrr = baseIrr;
    }

    public List<ProjectYearDataDTO> getYearDataDTOList() {
        return yearDataDTOList;
    }

    public void setYearDataDTOList(List<ProjectYearDataDTO> yearDataDTOList) {
        this.yearDataDTOList = yearDataDTOList;
    }

    public String getModelId() {
        return modelId;
    }

    public void setModelId(String modelId) {
        this.modelId = modelId;
    }

    public String[] getIrrAfterTax() {

        return irrAfterTax;
    }

    public Double getLowIrrAfterTax() {
        return lowIrrAfterTax;
    }

    public Double getHighIrrAfterTax() {
        return highIrrAfterTax;
    }

    public String[] getTotalInvest() {
        return totalInvest;
    }

    public void setTotalInvest(String[] totalInvest) {
        if (ArrayUtils.isNotEmpty(totalInvest)) {
            this.lowTotalInvest = DataConvertUtil.parse2Int(totalInvest[0], null);
            this.highTotalInvest = DataConvertUtil.parse2Int(totalInvest[1], null);
        }
        this.totalInvest = totalInvest;
    }

    public Integer getLowTotalInvest() {
        return lowTotalInvest;
    }

    public void setLowTotalInvest(Integer lowTotalInvest) {
        this.lowTotalInvest = lowTotalInvest;
    }

    public Integer getHighTotalInvest() {
        return highTotalInvest;
    }

    public void setHighTotalInvest(Integer highTotalInvest) {
        this.highTotalInvest = highTotalInvest;
    }

    public void setIrrAfterTax(String[] irrAfterTax) {
        if (irrAfterTax.length>0) {
            this.lowIrrAfterTax = DataConvertUtil.parse2Double(irrAfterTax[0],null);
        }if (irrAfterTax.length>1) {
            this.highIrrAfterTax = DataConvertUtil.parse2Double(irrAfterTax[1], null);
        }

        this.irrAfterTax = irrAfterTax;
    }

    public void setLowIrrAfterTax(Double lowIrrAfterTax) {
        this.lowIrrAfterTax = lowIrrAfterTax;
    }

    public void setHighIrrAfterTax(Double highIrrAfterTax) {
        this.highIrrAfterTax = highIrrAfterTax;
    }

    @Override
    public String toString() {
        return "ProjectInfoDTO{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", type='" + type + '\'' +
                ", buildOffice='" + buildOffice + '\'' +
                ", evaluationPeriod=" + evaluationPeriod +
                ", buildYearCount=" + buildYearCount +
                ", productType='" + productType + '\'' +
                ", productProperty='" + productProperty + '\'' +
                ", poolType='" + poolType + '\'' +
                ", areaMark='" + areaMark + '\'' +
                ", evaluationMethod='" + evaluationMethod + '\'' +
                ", year=" + year +
                ", batchId='" + batchId + '\'' +
                ", modelId='" + modelId + '\'' +
                ", yearDataDTOList=" + yearDataDTOList +
                '}';
    }

}
